package com.wangqingbo.myspringbootproject.dao;

import java.util.List;
import com.wangqingbo.myspringbootproject.entity.ProjectInfo;
import org.apache.ibatis.annotations.Param;

/**
 * 操作接口mapper
 */
public interface ProjectInfoMapper {

	/**
	 * 保存项目信息
	 * @param prj 项目的实体类
	 * @return 保存成功的项目数量
	 */
	public int saveProjectInfo(ProjectInfo prj);
	
	/**
	 * 根据ID查询项目信息
	 * @param projectId 项目id
	 * @return 项目对象
	 */
	public ProjectInfo getProjectInfoById(String projectId);
	
	/**
	 * 修改项目信息
	 * @param prj 项目对象
	 * @return 修改成功的数据条数
	 */
	public int updateProjectInfo(ProjectInfo prj);
	
	/**
	 * 根据id删除项目
	 * @param projectId 项目id
	 * @return 删除的数据条数
	 */
	public int delProjectInfoById(String projectId);
	
	/**
	 * 查询所有的项目
	 * @return 项目列表
	 */
	public List<ProjectInfo> getAllProjectInfo();

	/**
	 * 根据参数查询项目信息，并且要分页
	 * 参数名称前使用注解@Param("projectName")，mybatis的sql语句接收参数时，参数名和注解名称一致
	 * @param projectName 项目名称
	 * @param projectCode 项目编码
	 * @param offset 偏移量，用于分页
	 * @param pageSize 每页显示的数据条数，用于分页
	 * @return 项目列表
	 */
	public List<ProjectInfo> getProjectInfoByParamsPage(@Param("projectName") String projectName, @Param("projectCode")String projectCode, @Param("offset")int offset, @Param("pageSize")int pageSize);


	/**
	 * 根据参数查询项目数量
	 * 参数名称前使用注解@Param("projectName")，mybatis的sql语句接收参数时，参数名和注解名称一致
	 * @param projectName 项目名称
	 * @param projectCode 项目编码
	 * @return 项目数量
	 */
	public int getProjectInfoCountByParamsPage(@Param("projectName") String projectName, @Param("projectCode")String projectCode);


}
